// import config from '@/config'
// import { hasOneOf } from '@/libs/tools'
import { message } from 'ant-design-vue'

export const TOKEN_KEY = 'token'

export const setUser = (user) => {
  const time = new Date().getTime() + 1 * 86400000// 有效期按天计算
  window.localStorage.setItem(TOKEN_KEY, JSON.stringify({
    data: user,
    exp: time
  }))
}

export const getUser = () => {
  let json = window.localStorage.getItem(TOKEN_KEY)
  if (json) {
    json = JSON.parse(json)
    if (new Date().getTime() >= json.exp) {
      window.localStorage.removeItem(TOKEN_KEY)
    } else {
      return json.data
    }
  }
  return {
    userName: '',
    token: null,
    userId: '',
    avatorImgPath: ''
  }
}

// export const setCompanyCode = (code) => {
//   window.localStorage.setItem('currentCompanyCode', code)
// }

// export const getCompanyCode = () => {
//   const data = window.localStorage.getItem('currentCompanyCode')
//   return data
// }

export const clearUser = () => {
  window.localStorage.removeItem(TOKEN_KEY)
}

// export const isAdministrator = () => {
//   let json = window.localStorage.getItem(TOKEN_KEY)
//   if (json) {
//     json = JSON.parse(json)
//     const roleList = json.data.roleList
//     const isTrue = roleList.some(item => item.roleCode === 'R_SYSTEM_ADMIN')
//     return isTrue
//   }
//   return false
// }

// export const getUserCompany = () => {
//   let json = window.localStorage.getItem(TOKEN_KEY)
//   if (json) {
//     json = JSON.parse(json)
//     const company = json.data.company
//     return company
//   }
//   return ''
// }

// export const getCanSeeMeetingCompany = () => {
//   let json = window.localStorage.getItem(TOKEN_KEY)
//   if (json) {
//     json = JSON.parse(json)
//     const company = json.data.canSeeMeetingCompany
//     return company
//   }
//   return []
// }

const REM_KEY = 'REM_PASS'

export const setRemPass = data => {
  window.localStorage.setItem(REM_KEY, JSON.stringify({
    username: data.username,
    password: data.password,
    exp: new Date().getTime() + 604800 // 7天
  }))
}

export const getRemPass = () => {
  let json = window.localStorage.getItem(REM_KEY)
  if (json) {
    json = JSON.parse(json)
    if (new Date().getTime() >= json.exp) {
      window.localStorage.removeItem(REM_KEY)
      message.error("登录时间过期")
    } else {
      return {
        username: json.username,
        password: json.password
      }
    }
  }
}

// export const clearRemPass = () => {
//   window.localStorage.removeItem(REM_KEY)
// }

// export const hasChild = (item) => {
//   return item.children && item.children.length !== 0
// }

// const showThisMenuItem = (item, access) => {
//   if (item.meta && item.meta.access && item.meta.access.length) {
//     if (hasOneOf(item.meta.access, access)) {
//       return true
//     } else {
//       return false
//     }
//   } else {
//     return true
//   }
// }
// /**
//  * @param {Array} routers 通过路由列表得到菜单列表
//  * @returns {Array}
//  */
// export const getMenuByRouter = (routers, access) => {
//   let menu = []
//   routers.forEach(item => {
//     if (item.meta && !item.meta.hideInMenu) {
//       let menuItem = {
//         icon: (item.meta && item.meta.icon) || '',
//         name: item.name,
//         meta: item.meta
//       }
//       if (hasChild(item) && showThisMenuItem(item, access)) {
//         menuItem.children = getMenuByRouter(item.children, access)
//       }
//       if (item.meta.href) {
//         menuItem.href = item.meta.href
//       }
//       if (showThisMenuItem(item, access)) {
//         menu.push(menuItem)
//       }
//     }
//   })
//   return menu
// }

// /**
//  * @param {Array} routeMetched 当前路由metched
//  * @returns {Array}
//  */
// export const getBreadCrumbList = (routeMetched) => {
//   let res = routeMetched.filter(item => {
//     return item.meta === undefined || !item.meta.hide
//   }).map(item => {
//     let obj = {
//       icon: (item.meta && item.meta.icon) || '',
//       name: item.name,
//       meta: item.meta
//     }
//     return obj
//   })
//   res = res.filter(item => {
//     return !item.meta.hideInMenu
//   })
//   return [{
//     name: 'home',
//     to: '/home'
//   }, ...res]
// }

// export const showTitle = (item, vm) => vm.$config.useI18n ? vm.$t(item.name) : ((item.meta && item.meta.title) || item.name)

// /**
//  * @description 本地存储和获取标签导航列表
//  */
// export const setTagNavListInLocalstorage = list => {
//   localStorage.tagNaveList = JSON.stringify(list)
// }
// /**
//  * @returns {Array} 其中的每个元素只包含路由原信息中的name, path, meta三项
//  */
// export const getTagNavListFromLocalstorage = () => {
//   const list = localStorage.tagNaveList
//   return list ? JSON.parse(list) : []
// }

// /**
//  * @param {Array} routers 路由列表数组
//  * @description 用于找到路由列表中name为home的对象
//  */
// export const getHomeRoute = routers => {
//   let i = -1
//   let len = routers.length
//   let homeRoute = {}
//   while (++i < len) {
//     let item = routers[i]
//     if (item.children && item.children.length) {
//       let res = getHomeRoute(item.children)
//       if (res.name) {
//         return res
//       }
//     } else {
//       if (item.name === 'home') {
//         homeRoute = item
//       }
//     }
//   }
//   return homeRoute
// }

// /**
//  * @param {*} list 现有标签导航列表
//  * @param {*} newRoute 新添加的路由原信息对象
//  * @description 如果该newRoute已经存在则不再添加
//  */
// export const getNewTagList = (list, newRoute) => {
//   const { name, path, meta } = newRoute
//   let newList = [...list]
//   if (newList.findIndex(item => item.name === name) >= 0) return newList
//   else newList.push({ name, path, meta })
//   return newList
// }

// /**
//  * @param {*} access 用户权限数组，如 ['super_admin', 'admin']
//  * @param {*} route 路由列表
//  */
// const hasAccess = (access, route) => {
//   if (route.meta && route.meta.access) {
//     return hasOneOf(access, route.meta.access)
//   } else {
//     return true
//   }
// }

// /**
//  * @param {*} name 即将跳转的路由name
//  * @param {*} access 用户权限数组
//  * @param {*} routes 路由列表
//  * @description 用户是否可跳转到该页
//  */
// export const canAccessTo = (name, access, routes) => {
//   const getHasAccessRouteNames = (list) => {
//     let canAccessNames = []
//     list.forEach(item => {
//       if (item.children && item.children.length) {
//         canAccessNames = [].concat(canAccessNames, getHasAccessRouteNames(item.children))
//       } else {
//         if (item.meta && item.meta.access) {
//           if (hasAccess(access, item)) canAccessNames.push(item.name)
//         } else {
//           canAccessNames.push(item.name)
//         }
//       }
//     })
//     return canAccessNames
//   }
//   const canAccessNames = getHasAccessRouteNames(routes)
//   return canAccessNames.indexOf(name) > -1
// }

// /**
//  * @param {String} url
//  * @description 从URL中解析参数
//  */
// export const getParams = url => {
//   const keyValueArr = url.split('?')[1].split('&')
//   let paramObj = {}
//   keyValueArr.forEach(item => {
//     const keyValue = item.split('=')
//     paramObj[keyValue[0]] = keyValue[1]
//   })
//   return paramObj
// }

// /**
//  * @param {Array} list 标签列表
//  * @param {String} name 当前关闭的标签的name
//  */
// export const getNextName = (list, name) => {
//   let res = ''
//   if (list.length === 2) {
//     res = 'home'
//   } else {
//     if (list.findIndex(item => item.name === name) === list.length - 1) res = list[list.length - 2].name
//     else res = list[list.findIndex(item => item.name === name) + 1].name
//   }
//   return res
// }

// /**
//  * @param {Number} times 回调函数需要执行的次数
//  * @param {Function} callback 回调函数
//  */
// export const doCustomTimes = (times, callback) => {
//   let i = -1
//   while (++i < times) {
//     callback()
//   }
// }

// /**
//  * @param {Object} file 从上传组件得到的文件对象
//  * @returns {Promise} resolve参数是解析后的二维数组
//  * @description 从Csv文件中解析出表格，解析成二维数组
//  */
// export const getArrayFromFile = (file) => {
//   let nameSplit = file.name.split('.')
//   let format = nameSplit[nameSplit.length - 1]
//   return new Promise((resolve, reject) => {
//     let reader = new FileReader()
//     reader.readAsText(file) // 以文本格式读取
//     let arr = []
//     reader.onload = function (evt) {
//       let data = evt.target.result // 读到的数据
//       let pasteData = data.trim()
//       arr = pasteData.split((/[\n\u0085\u2028\u2029]|\r\n?/g)).map(row => {
//         return row.split('\t')
//       }).map(item => {
//         return item[0].split(',')
//       })
//       if (format === 'csv') resolve(arr)
//       else reject(new Error('[Format Error]:你上传的不是Csv文件'))
//     }
//   })
// }

// /**
//  * @param {Array} array 表格数据二维数组
//  * @returns {Object} { columns, tableData }
//  * @description 从二维数组中获取表头和表格数据，将第一行作为表头，用于在iView的表格中展示数据
//  */
// export const getTableDataFromArray = (array) => {
//   let columns = []
//   let tableData = []
//   if (array.length > 1) {
//     let titles = array.shift()
//     columns = titles.map(item => {
//       return {
//         title: item,
//         key: item
//       }
//     })
//     tableData = array.map(item => {
//       let res = {}
//       item.forEach((col, i) => {
//         res[titles[i]] = col
//       })
//       return res
//     })
//   }
//   return {
//     columns,
//     tableData
//   }
// }

// export const findNodeUpper = (ele, tag) => {
//   if (ele.parentNode) {
//     if (ele.parentNode.tagName === tag.toUpperCase()) {
//       return ele.parentNode
//     } else {
//       return findNodeUpper(ele.parentNode, tag)
//     }
//   }
// }

// export const findNodeDownward = (ele, tag) => {
//   const tagName = tag.toUpperCase()
//   if (ele.childNodes.length) {
//     let i = -1
//     let len = ele.childNodes.length
//     while (++i < len) {
//       let child = ele.childNodes[i]
//       if (child.tagName === tagName) return child
//       else return findNodeDownward(child, tag)
//     }
//   }
// }

// export const showByAccess = (access, canViewAccess) => {
//   return hasOneOf(canViewAccess, access)
// }

// export const routeEqual = (route1, route2) => {
//   const params1 = route1.params || {}
//   const params2 = route2.params || {}
//   const query1 = route1.query || {}
//   const query2 = route2.query || {}
//   return (route1.name === route2.name) && objEqual(params1, params2) && objEqual(query1, query2)
// }

// /**
//  * @param {*} obj1 对象
//  * @param {*} obj2 对象
//  * @description 判断两个对象是否相等，这两个对象的值只能是数字或字符串
//  */
// export const objEqual = (obj1, obj2) => {
//   const keysArr1 = Object.keys(obj1)
//   const keysArr2 = Object.keys(obj2)
//   if (keysArr1.length !== keysArr2.length) return false
//   else if (keysArr1.length === 0 && keysArr2.length === 0) return true
//   /* eslint-disable-next-line */
//   else return !keysArr1.some(key => obj1[key] != obj2[key])
// }

// export const getNextRoute = (list, route) => {
//   let res = {}
//   if (list.length === 2) {
//     res = getHomeRoute(list)
//   } else {
//     const index = list.findIndex(item => routeEqual(item, route))
//     if (index === list.length - 1) res = list[list.length - 2]
//     else res = list[index + 1]
//   }
//   return res
// }

// export const LoginExpired = () => {
//   localStorage.removeItem(TOKEN_KEY)
//   const target = window.location.hash.substring(1)
//   const index = location.href.indexOf(location.hash)
//   const locationBody = location.href.substring(0, index)
//   if (target !== '/login' && target.indexOf('redirect_url') === -1) {
//     window.location.href = `${locationBody}#/login?redirect_url=${target}`
//   } else {
//     window.location.reload()
//   }
// }
